package com.mengxingyun.shortlink.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mengxingyun.shortlink.project.dto.req.ShortLinkGroupStatsAccessRecordReqDTO;
import com.mengxingyun.shortlink.project.dto.req.ShortLinkGroupStatsReqDTO;
import com.mengxingyun.shortlink.project.dto.req.ShortLinkStatsAccessRecordReqDTO;
import com.mengxingyun.shortlink.project.dto.req.ShortLinkStatsReqDTO;
import com.mengxingyun.shortlink.project.dto.resp.ShortLinkStatsAccessRecordRespDTO;
import com.mengxingyun.shortlink.project.dto.resp.ShortLinkStatsRespDTO;

/**
 * @Description: 短链接监控接口服务层
 * @Author: heshen-mengxingyun
 * @Date: 2024/8/3 20:42
 */
public interface ShortLinkStatsService {
    /**
     * 获取单个短链接监控数据
     * @param requestParam  获取短链接监控数据入参
     * @return  短链接监控数据
     */
    ShortLinkStatsRespDTO oneShortLinkStats(ShortLinkStatsReqDTO requestParam);

    /**
     * 分页访问单个短链接指定时间内访问记录监控数据
     * @param requestParam  获取短链接监控访问记录数据入参
     * @return  访问记录监控数据
     */
    IPage<ShortLinkStatsAccessRecordRespDTO> shortLinkStatsAccessRecord(ShortLinkStatsAccessRecordReqDTO requestParam);

    /**
     * 分组短链接监控数据
     * @param requestParam  分组短链接监控数据入参
     * @return  分组短链接监控数据
     */
    ShortLinkStatsRespDTO groupShortLinkStats(ShortLinkGroupStatsReqDTO requestParam);

    /**
     * 分页访问短链接分组指定时间内访问记录监控数据
     * @param requestParam   短链接分组监控访问记录数据入参
     * @return  分组访问监控数据
     */
    IPage<ShortLinkStatsAccessRecordRespDTO> groupShortLinkStatsAccessRecord(ShortLinkGroupStatsAccessRecordReqDTO requestParam);
}
